﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace GUI
{
    public partial class DonHang : Form
    {
        public DonHang()
        {
            InitializeComponent();
        }
        //Q chaydi, Q up project nay 1 lan nua xem
        private bool huy = false;
        private int Status = 0;

        private void DonHang_Load(object sender, EventArgs e)
        {
            //Cho phép nhân viên chọn món ăn
            ChonMon frmChonMon = new ChonMon();
            frmChonMon.ShowDialog();
            huy = frmChonMon.huy;

            if (!huy)
            {
                //clear thanh phan nhap
                txt_tenKH.Text = null;
                txt_diaChi.Text = null;
                txt_dienThoai.Text = null;
                txt_ghiChu.Text = null;

                //Lấy mã phiếu đặt 
                string phieuDatID = PhieuDatBUS.CreatePhieuDatId();//Chạy store SelectNhanVienById rồi mới chạy chương trình
                PhieuDatDTO phieuDatDTO = new PhieuDatDTO();

                txt_maPD.Text = phieuDatID;
                phieuDatDTO.Ma_PD = phieuDatID;

                txt_tenNV.Text = ThongTin.NhanVienTT.Ten_NV;
                phieuDatDTO.NV_Dat = ThongTin.NhanVienTT.Ma_NV;

                DateTime DateTimeSystem = DateTime.Now;
                txt_ngayDat.Text = DateTimeSystem.ToString("MM/dd/yyyy");
                phieuDatDTO.NgayDat = DateTime.Parse(txt_ngayDat.Text);

                phieuDatDTO.Ten_KH = phieuDatDTO.DiaChi = phieuDatDTO.DienThoai = phieuDatDTO.GhiChu = "null";
                phieuDatDTO.ThanhTien = phieuDatDTO.TinhTrang = -1;

                PhieuDatBUS.InsertPhieuDat(phieuDatDTO);

                //Đưa dữ liệu từ form chọn món vào datagridview
                List<MonAnDTO> monAnDTO = frmChonMon.listMonAn;
                int stt = 1;
                foreach (MonAnDTO monAn in monAnDTO)
                {
                    ChiTietPhieuDatDTO ct = new ChiTietPhieuDatDTO();
                    ct.MaChiTietPD = ChiTietPhieuDatBUS.CreateChiTietPhieuDatId();
                    ct.Ma_PD = ct.Ma_Mon = ct.GhiChu = "001";
                    ct.DonGia = ct.ThanhTien = 0;
                    ct.SoLuong = 0;
                    ChiTietPhieuDatBUS.InsertChiTietPhieuDat(ct);

                    dataGridView_chitietdonhang.Rows.Add(stt, ct.MaChiTietPD, monAn.Ma_Mon, monAn.TenMon, 0, monAn.GiaTien, 0);
                    stt++;
                }
            }
            else
            {
                this.Close();
            }              
        }

        private void dataGridView_chitietdonhang_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            float kq = 0;
            DataGridViewCell cell = dataGridView_chitietdonhang.CurrentCell;
            // Sửa lỗi trường hợp để ô ở cột số lượng rỗng
            if (dataGridView_chitietdonhang.CurrentRow.Cells[e.ColumnIndex].Value == null)
            {
                dataGridView_chitietdonhang.CurrentRow.Cells[e.ColumnIndex].Value = 0;
            }
            int SoLuong = 0;
            float DonGia;
            if (int.TryParse(dataGridView_chitietdonhang.CurrentRow.Cells[e.ColumnIndex].Value.ToString(), out SoLuong))
            {
                SoLuong = int.Parse(dataGridView_chitietdonhang.CurrentRow.Cells[e.ColumnIndex].Value.ToString());
            }
            else
            {
                cell.Value = 0;
                MessageBox.Show("Dữ liệu nhập không hợp lệ");
                dataGridView_chitietdonhang.ClearSelection();
                dataGridView_chitietdonhang.CurrentCell = cell;
                dataGridView_chitietdonhang.CurrentCell.Selected = true;

                return;
            }
            //Lấy đơn giá ở cột bên cạnh ô đang edit
            DonGia = float.Parse(dataGridView_chitietdonhang.CurrentRow.Cells[e.ColumnIndex + 1].Value.ToString());
            if (SoLuong * DonGia > 0)
            {
                kq = SoLuong * DonGia;
            }
            //Xuất ra kết quả ở cột cách ô đang edit 2 cột
            dataGridView_chitietdonhang.CurrentRow.Cells[e.ColumnIndex + 2].Value = string.Format("{0:#,0.##}", kq);

            TongTien();
        }

        private void TongTien()
        {
            float TongTien = 0;
            for (int i = 0; i < dataGridView_chitietdonhang.Rows.Count; i++)
            {
                TongTien += float.Parse(dataGridView_chitietdonhang.Rows[i].Cells["clThanhTien"].Value.ToString());
            }
            float MoneyCurrent = TongTien;
            txt_tongTien.Text = string.Format("{0:#,0.##}", MoneyCurrent);            
        }

        //private void btn_lamMoi_Click(object sender, EventArgs e)
        //{
        //    dataGridView_chitietdonhang.Rows.Clear();

        //    //clear thanh phan nhap
        //    txt_tenKH.Text = null;
        //    txt_diaChi.Text = null;
        //    txt_dienThoai.Text = null;
        //    txt_ghiChu.Text = null;
        //}

        private void btn_tao_Click(object sender, EventArgs e)
        {
            int flag =1;// 1: thanhcong; 0: thatbai
            //Lấy thông tin phiếu đặt
            PhieuDatDTO phieuDatDTO = new PhieuDatDTO();

            phieuDatDTO.Ma_PD = txt_maPD.Text;
            phieuDatDTO.NV_Dat = ThongTin.NhanVienTT.Ma_NV;
            phieuDatDTO.NgayDat = DateTime.Parse(txt_ngayDat.Text);
            phieuDatDTO.ThanhTien = float.Parse(txt_tongTien.Text);
            phieuDatDTO.Ten_KH = txt_tenKH.Text;
            phieuDatDTO.DiaChi = txt_diaChi.Text;
            phieuDatDTO.DienThoai = txt_dienThoai.Text;
            phieuDatDTO.GhiChu = txt_ghiChu.Text;

            //insert thông tin của phiếu đặt.
            if (PhieuDatBUS.UpdatePhieuDatById(phieuDatDTO))
            {
                ChiTietPhieuDatDTO ctPhieuDatDTO = new ChiTietPhieuDatDTO();
                //insert chi tiet phieu dat
                for (int i = 0; i < dataGridView_chitietdonhang.RowCount; i++)
                {

                    if (int.Parse(dataGridView_chitietdonhang.Rows[i].Cells["clSoLuong"].Value.ToString()) > 0)
                    {

                        ctPhieuDatDTO.MaChiTietPD = dataGridView_chitietdonhang.Rows[i].Cells["clChiTietPD"].Value.ToString();
                        ctPhieuDatDTO.Ma_PD = txt_maPD.Text;
                        ctPhieuDatDTO.Ma_Mon = dataGridView_chitietdonhang.Rows[i].Cells["clMaMon"].Value.ToString();
                        ctPhieuDatDTO.SoLuong = int.Parse(dataGridView_chitietdonhang.Rows[i].Cells["clSoLuong"].Value.ToString());
                        ctPhieuDatDTO.DonGia = float.Parse(dataGridView_chitietdonhang.Rows[i].Cells["clDonGia"].Value.ToString());
                        ctPhieuDatDTO.ThanhTien = float.Parse(dataGridView_chitietdonhang.Rows[i].Cells["clThanhTien"].Value.ToString());
                        ctPhieuDatDTO.GhiChu = "";

                    }
                    if (ChiTietPhieuDatBUS.UpdateChiTietPhieuDat(ctPhieuDatDTO) == false)
                    {
                        //cap nhat bang Thucphamsoche
                        //DataTable data = ThucPhamSoCheBUS.UpdateThucPhamSoCheById(txt_maPD.Text);
                        //if (data.Rows.Count == 0)
                        //{
                            flag = 0;
                            break;
                       // }
                        
                    }                    
                }
                if (flag == 1)
                {
                    DataTable data = ThucPhamSoCheBUS.UpdateThucPhamSoCheById(txt_maPD.Text);
                    if (data.Rows.Count == 0)
                    {
                        flag = 0;
                    }
                }
            }
            else
            {
                flag = 0;
            }

            if (flag == 1)
            {
                MessageBox.Show("Đơn hàng tạo thành công!");
                dataGridView_chitietdonhang.Rows.Clear();
                DonHang_Load(sender, e);
            }
            else
            {
                MessageBox.Show("Thêm phiếu đặt không thành công");

                //Rollback tran
                for (int i = 0; i < dataGridView_chitietdonhang.RowCount; i++)
                {
                    if (int.Parse(dataGridView_chitietdonhang.Rows[i].Cells["clSoLuong"].Value.ToString()) > 0)
                    {
                        string maCTPD = dataGridView_chitietdonhang.Rows[i].Cells["clChiTietPD"].Value.ToString();
                        ChiTietPhieuDatBUS.DeleteChiTietPhieuDatbyId(maCTPD);
                    }
                }
                PhieuDatBUS.DeletePhieuDatById(phieuDatDTO.Ma_PD);
            }
                
        }

        private void btn_thoat_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void btn_taoMoi_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Bạn Muốn Lưu Đơn Hàng Không:", "Đơn hàng", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
            if (result == DialogResult.Yes)
            {
                btn_tao_Click(sender, e);
            }
            else if (result == DialogResult.No)
            {
                dataGridView_chitietdonhang.Rows.Clear();
                DonHang_Load(sender, e);
            }
            return;
        }       
    }
}
